/**
 * @author chj
 * 创建时间：2020年8月28日
 * 修改时间：2020年8月28日
 * --------------------
 * 设计模式：模板方法模式
 * 基本定义：在父类中定义处理流程，在子类中定义处理的设计模式是模板方法模式（Template Mothod Pattern）。
 * 详细说明：
 * * Template Method模式是带有模板功能的模式，使用Template Method模式的类中，父类含有模板方法，实现模板功能，定义处理流程，子类含有具体方法，实现具体功能，定义处理。
 * 示例说明：
 * * 该示例是一段将字符或字符串循环显示5次的简单程序。
 * * 含有的类：AbstractDisplay、CharDisplay、StringDisplay、Main。
 * * - AbstractDisplay类定义了display方法，在该方法中依次调用了open、print、close3个抽象方法，这里的调用抽象方法的display方法就是模板方法。
 * * - CharDisplay类继承AbstractDisplay类实现了open、print、close方法，从而实现了display方法，这里的调用实现方法的display方法就是具体方法。
 * * - StringDisplay类继承AbstractDisplay类实现了open、print、close方法，从而实现了display方法，这里的调用实现方法的display方法就是具体方法。
 * * - Main类是用于测试程序行为的类。
 * 优点：由于在父类的模板方法中编写了算法，因此无需在每个子类中再编写算法。
 * 缺点：父类和子类紧密联系、共同工作的，因此在子类中实现父类中声明的抽象方法时，必须要理解这些抽象方法被调用的时机。在看不到父类源代码的情况下，想要编写出子类是非常困难的。
 * --------------------
 * 注：无论在父类类型的变量中保存哪个子类的实例，程序都可以正常工作，这种原则成为“里氏替换原则（The Liskov Substitution Principle, LSP）”。
 */
package template_method;